package com.demo.money.dao;

import com.demo.money.model.Costdetails;
import com.demo.money.kit.example.CostdetailsExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CostdetailsDao {
    long countByExample(CostdetailsExample example);

    int deleteByExample(CostdetailsExample example);

    /**
     * 删除一条消费信息byKey
     *
     * @param id 主键id
     * @return 响应代码
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 添加消费信息
     *
     * @param record 待添加的消费信息
     * @return 响应代码
     */
    int insert(Costdetails record);

    int insertSelective(Costdetails record);

    /**
     * 综合查询
     *
     * @param example 查询条件
     * @return 查询结果
     */
    List<Costdetails> selectByExample(CostdetailsExample example);

    /**
     * 支出信息综合查询
     *
     * @param userId             所属用户 - 等于
     * @param startTime          开始时间 - 大等于
     * @param endTime            结束时间 - 小等于
     * @param startMoney         起始金额 - 大等于
     * @param endMoney           最大金额 - 小等于
     * @param largeclass         类别 - 等于
     * @param subclass           支出平台 - LIKE
     * @param tradename          商品名称 - LIKE
     * @param satisfactiondegree 满意度 - 等于
     * @param note               备注 - LIKE
     * @return 查询结果
     */
    List<Costdetails> selectByZhongHe(@Param(value = "userId") String userId, @Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime, @Param(value = "startMoney") String startMoney, @Param(value = "endMoney") String endMoney, @Param(value = "largeclass") String largeclass, @Param(value = "subclass") String subclass, @Param(value = "tradename") String tradename, @Param(value = "satisfactiondegree") String satisfactiondegree, @Param(value = "note") String note);

    Costdetails selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Costdetails record, @Param("example") CostdetailsExample example);

    int updateByExample(@Param("record") Costdetails record, @Param("example") CostdetailsExample example);

    int updateByPrimaryKeySelective(Costdetails record);

    /**
     * 更新消费信息
     *
     * @param record 待更新的消费信息
     * @return 响应代码
     */
    int updateByPrimaryKey(Costdetails record);
}